Final Project

Introduction

Cancer is an extremely heterogeneous disease. While the availability of genomic testing of tumors is continuously increasing, linking the correct drug to the right patient remains a challenge. Part of this challenge is the difficulty to predict drug responses to a large number of drugs based on a tumors genetic profile.

In order to increase our understanding of how genetic markers predict drug response, laboratory tumor models, such as 2D cancer cell lines, can be treated with a large number of therapeutics in-vitro. The drug response of these tumor models, in combination with their genetic data, can then be associated.

Part 1: The CancerRxGene Dataset

In this project I present the CancerRxGene Dataset by the Genomics in Drug Sensitivity in Cancer Project. It contains genomic information for >1000 cancer cell lines together with in-vitro drug response information. The data can be used to find genomic biomarkers of drug response in cancer cell lines. In the future, this dataset will be maintained by the DepMap project, a joint effort by the Welcome Trust Sanger Institute and the Broad Institute. The data is publicly available. To the best of my knowledge, it is one of the greatest non-commercial drug sensitivity datasets in cancer models.

Landing page of the CancerRxGene Portal

Landing page of the CancerRxGene Portal

Who publishes the dataset? The data is published by the Genomics in Drug Sensitivity in Cancer Project. The project is a joint effort by the Cancer Genome Project, the Wellcome Trust Sanger institute and the Center for Molecular Therapeutics at MGH.

Why do they publish it? The data is funded by public entities, such as the Wellcome Trust and is published in scientific publications. To increase the access of the project’s data, the data is freely available online.

How frequently is it updated? The data is updated in an irregular schedule, when a batch of cancer cell line vulnerability data has been collected and pre-processed. The last update of the dataset was published in March 2018.

What variables does it contain? The dataset contains multiple tables: * meta-data about every cancer cell line, such as culture medium and tissue of origin. * copy-number variants for every cell line, in the form of a binary matrix * gene expression data for every cell line, in the form of a numeric matrix * drug response data for every cell line. The data contains IC50 values for >60 drugs.

How is it delivered? The data is available on the project’s website and is split across multiple Excel files.

Are there any restrictions on its use or availability? Yes, the data is subject to restrictions: “Users have a non-exclusive, non-transferable right to use data files for internal, non-commercial research and educational purposes Please note: The data files are experimental and academic in nature and are not licensed or certified by any regulatory body. Genome Research Limited provides access to data files on an “as is” basis and excludes all warranties of any kind (express or implied).”.

Does it make use of any standard (or proprietary) ontologies or terminologies? The data uses COSMIC IDs to identify cell lines. The gene expression data is annotated using the Ensemble nomenclature. The gene mutation dataset is annotated using the HUGO terminology. The drugs tested are not linked to a standardized ontology.

What are some questions that have been asked previously using the data? Previously, this data has been used to find predictive models that link genetic markers with drug response Iorio et al., 2016. In addition visualization projects have created applications to explore this dataset.

Examplatory analysis in the CancerRxGene Portal: Which genomic features are associated with drug sensitivity to the chemotherapeutic 5-FU

Examplatory analysis in the CancerRxGene Portal: Which genomic features are associated with drug sensitivity to the chemotherapeutic 5-FU

Part 2: Identification of potential personalized cancer combination therapies under a non-synergy assumption

Introduction

Recent simulation analysis of clinical trials assessing the activity of combination cancer therapies suggest, that the main driver of superiority of drug combinations over single-agent regimens is not biochemical synergy between drugs, but an increased probability of either one of the drugs causing a therapeutic effect in a patient’s disease. According to this theory, combination treatments with agents that have anti-correlated response profiles are interesting candidate compounds for further clinical evaluation. In their original study the authors demonstrate that in fact the majority of currently administered combination treatments in oncology are not positively correlated.

Visual Abstract of Combination Cancer Therapy Can Confer Benefit via Patient-to-Patient Variability without Drug Additivity or Synergy by Palmer et al., 2018

Visual Abstract of Combination Cancer Therapy Can Confer Benefit via Patient-to-Patient Variability without Drug Additivity or Synergy by Palmer et al., 2018

In this study, my goal is to identify new potential combinations of therapeutics that are anti correlated in one of the largest in-vitro cancer drug sensitivity datasets. Because oncology today is a highly specialized field, it is not sufficient to only identify compounds that are anti-correlated from a pan-cancer perspective. Instead, I will run multiple correlation analysis on subsets of cancer cell lines defined by tissue of origin or mutation status. Because, the estimation of correlation coefficients is not stable with differing number of samples and subsetting of the dataset leads to very small subgroups, I have introduced a Bayesian sampling based method to estimate the credible intervals of correlation coefficients for small genetically defined subgroups. I have identified an anti-correlation of highly active MEK and AKT inhibitors across all available cancer types. Among many, Bayesian estimation of correlation coefficients identified NGFR receptor inhibition as a strong candidate combination for MEK inhibitors in Melanoma, thereby confirming prior reports of de-differentiation based drug resistance to MEK inhibition.

Simulation of combinatory drug effects by Palmer et al. suggest non-synergistic interactions of anti-cancer agents across drug- and cancer-types

Simulation of combinatory drug effects by Palmer et al. suggest non-synergistic interactions of anti-cancer agents across drug- and cancer-types

Correlation analysis of drug sensitivity profiles identifies mutually exclusive sensitivity to MEK and AKT inhibition.

We preprocessed the drug response data by log transforming and median centering IC50 values for each drug over every cell line. By transforming IC50 values this way, we are able to compare drug effects between both cell lines and drugs.

Distribution of log(IC50) values before centering

Distribution of log(IC50) values before centering

The two density plots show the distribution of IC50 values across all cell lines for each drug.

Distribution of log(IC50) values after centering

Distribution of log(IC50) values after centering

After preprocessing drug response scores, I performed Pearson correlation analyses of pairwise complete observations for each unique pair of drug sensitivity vectors.

Correlation of drug-drug pairs across all possible combinations using all available cellline models

Correlation of drug-drug pairs across all possible combinations using all available cellline models

I used available compound mechanism of action information to link every pair to the molecular targets it was inhibiting. Chi-Square testing of molecular targets in the significantly negative correlated pairs showed a strong enrichment for the combined inhibition of MEK and AKT.

Enrichment of dual inhibition of MEK and AKT across all cancer cell lines. Shown are the residuals for each molecularly targeted pair after performing a Chi-Square test. Only values with a positive residual are plotted.

Enrichment of dual inhibition of MEK and AKT across all cancer cell lines. Shown are the residuals for each molecularly targeted pair after performing a Chi-Square test. Only values with a positive residual are plotted.

In-depth analysis of the anti-correlation pattern between MEK and AKT inhibitors showed a mutually exclusive response pattern to either MEK or AKT inhibition, while the majority of tumor cells did not respond to both treatments.

Anticorrelation of MEK- and AKT-inhibitor sensitivity

Anticorrelation of MEK- and AKT-inhibitor sensitivity

Sensitivity to MEK inhibition and AKT inhibition has previously Been linked to the mutation status of biomarkers, such as KRAS or PI3K. In line with these associations, KRAS mutant cancer cells were more sensitive to MEK inhibition as were PIK3CA mutant cells to AKT inhibition.

KRAS and PI3KCA status are linked to drug response under MEK and AKT inhibition

KRAS and PI3KCA status are linked to drug response under MEK and AKT inhibition

Bayesian subgroup-restricted correlation analysis identifies potential tissue- and genotype-specific combination therapies.

As the previous example illustrates, known genotype- and tissue-specific predictors of drug sensitivity can underlie anti-correlation patterns, thereby reducing the clinical value of such drug combinations in a genetically-informed clinical practice. In order to identify drug combinations in more specific subgroups of cancer models, which share common genetic features of tissue types, I performed multiple correlation analyses in subgroups of cancer cell lines.

To this end, I identified more than 50 genotype or tissue related features that are at least present in more than 2% of all available cancer models. After grouping models by features and performing subgroup-specific correlation analyses I observed a strong heteroscedasticity of correlation coefficients, depending on the size of the respective subgroup.

Increased variance of correlation coefficients as subgroup size decreases

Increased variance of correlation coefficients as subgroup size decreases

To generate stable estimates of correlation, I generated sampling based credible intervals of correlation coefficients using a Bayesian correlation method which expects a bivariate t-distribution underlying a given dataset. Thus, it is less vulnerable to outliers, which are especially impactful in subgroups with low sample size. Because of restricted compute access (sampling of 60.000 drug pairs across subgroups took >24h on an instance with 16 CPUs) I was not able to estimate credible intervals for every drug-drug pair, but restricted the evaluation to pairs with a correlation coefficient <0 in the prior non-robust correlation analysis.

NTRK1 inhibtors are active in MEK inhibitor resistant Melanoma cell lines

NTRK1 inhibtors are active in MEK inhibitor resistant Melanoma cell lines

As a part of this analysis I identified a strong anti-correlation of selumetinib and gw441756 in melanoma cancer models. Today, MEK inhibition is an available targeted treatment strategy of BRAF negative Melanoma. Recent evidence suggests that MEK inhibitor resistant melanoma cells enter a state of dedifferentation, by over expression of NGFR, an interaction partner of NTRK1.

Another observation during the analysis of the results was an anti correlation of responses to the two pro-apoptotic compounds r-TRAIL and Obatoclax in APC mutant cancer cell lines. APC is a frequently mutated tumor suppressor gene in colorectal cancer. The identified anti-correlation can be explained by the two different mechansisms of apoptosis stimulation in human cells, the intrinsic pathway, which is modified by Obatoclax and the extrinsic pathway, which is influenced by r-TRAIL.

extrinsic stimulation of apoptosis is active in Obatoclax resistant APC mutant cancer cells

extrinsic stimulation of apoptosis is active in Obatoclax resistant APC mutant cancer cells

The timeline of this project did not allow for further in-depth analysis of potential combination therapies. I plan to pursue this project further and work towards a publication.

Curating a database of drug response and genomic information of cancer models

In order to facilitate the use of the curated data, I created a compact SQLite database, which can be shared upon request. The database contains 4 tables:

  • copy number variations
  • mutations
  • drug responses
  • cell line covariates, such as tissue type

All tables are searchable by the cosmic_id, a unique identifier for every cancer cell line in the dataset.

LS0tCnRpdGxlOiAiQk1JNzAyIEZpbmFsIFByb2plY3QgUmVwb3J0IgphdXRob3I6ICJOaWtsYXMgUmluZHRvcmZmIgpkYXRlOiAiNC8xNS8yMDE5IgpvdXRwdXQ6CiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKIyBGaW5hbCBQcm9qZWN0CgojIyBJbnRyb2R1Y3Rpb24gCgpDYW5jZXIgaXMgYW4gZXh0cmVtZWx5IGhldGVyb2dlbmVvdXMgZGlzZWFzZS4gV2hpbGUgdGhlIGF2YWlsYWJpbGl0eSBvZiBnZW5vbWljIHRlc3Rpbmcgb2YgdHVtb3JzIGlzIGNvbnRpbnVvdXNseSBpbmNyZWFzaW5nLCBsaW5raW5nIHRoZSBjb3JyZWN0IGRydWcgdG8gdGhlIHJpZ2h0IHBhdGllbnQgcmVtYWlucyBhIGNoYWxsZW5nZS4gUGFydCBvZiB0aGlzIGNoYWxsZW5nZSBpcyB0aGUgZGlmZmljdWx0eSB0byBwcmVkaWN0IGRydWcgcmVzcG9uc2VzIHRvIGEgbGFyZ2UgbnVtYmVyIG9mIGRydWdzIGJhc2VkIG9uIGEgdHVtb3JzIGdlbmV0aWMgcHJvZmlsZS4KCkluIG9yZGVyIHRvIGluY3JlYXNlIG91ciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBnZW5ldGljIG1hcmtlcnMgcHJlZGljdCBkcnVnIHJlc3BvbnNlLCBsYWJvcmF0b3J5IHR1bW9yIG1vZGVscywgc3VjaCBhcyAyRCBjYW5jZXIgY2VsbCBsaW5lcywgY2FuIGJlIHRyZWF0ZWQgd2l0aCBhIGxhcmdlIG51bWJlciBvZiB0aGVyYXBldXRpY3MgaW4tdml0cm8uIFRoZSBkcnVnIHJlc3BvbnNlIG9mIHRoZXNlIHR1bW9yIG1vZGVscywgaW4gY29tYmluYXRpb24gd2l0aCB0aGVpciBnZW5ldGljIGRhdGEsIGNhbiB0aGVuIGJlIGFzc29jaWF0ZWQuIAoKIyMgUGFydCAxOiBUaGUgQ2FuY2VyUnhHZW5lIERhdGFzZXQKCkluIHRoaXMgcHJvamVjdCBJIHByZXNlbnQgdGhlIFsqKkNhbmNlclJ4R2VuZSBEYXRhc2V0KipdKGh0dHBzOi8vd3d3LmNhbmNlcnJ4Z2VuZS5vcmcvdHJhbnNsYXRpb24vRHJ1Zy8xNzkjdnApIGJ5IHRoZSBHZW5vbWljcyBpbiBEcnVnIFNlbnNpdGl2aXR5IGluIENhbmNlciBQcm9qZWN0LiBJdCBjb250YWlucyBnZW5vbWljIGluZm9ybWF0aW9uIGZvciA+MTAwMCBjYW5jZXIgY2VsbCBsaW5lcyB0b2dldGhlciB3aXRoIGluLXZpdHJvIGRydWcgcmVzcG9uc2UgaW5mb3JtYXRpb24uIFRoZSBkYXRhIGNhbiBiZSB1c2VkIHRvIGZpbmQgZ2Vub21pYyBiaW9tYXJrZXJzIG9mIGRydWcgcmVzcG9uc2UgaW4gY2FuY2VyIGNlbGwgbGluZXMuIEluIHRoZSBmdXR1cmUsIHRoaXMgZGF0YXNldCB3aWxsIGJlIG1haW50YWluZWQgYnkgdGhlIERlcE1hcCBwcm9qZWN0LCBhIGpvaW50IGVmZm9ydCBieSB0aGUgV2VsY29tZSBUcnVzdCBTYW5nZXIgSW5zdGl0dXRlIGFuZCB0aGUgQnJvYWQgSW5zdGl0dXRlLiBUaGUgZGF0YSBpcyBwdWJsaWNseSBhdmFpbGFibGUuIFRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZSwgaXQgaXMgb25lIG9mIHRoZSBncmVhdGVzdCBub24tY29tbWVyY2lhbCBkcnVnIHNlbnNpdGl2aXR5IGRhdGFzZXRzIGluIGNhbmNlciBtb2RlbHMuCgohW0xhbmRpbmcgcGFnZSBvZiB0aGUgQ2FuY2VyUnhHZW5lIFBvcnRhbF0obGFuZGluZ19wYWdlLnBuZykKCioqV2hvIHB1Ymxpc2hlcyB0aGUgZGF0YXNldD8qKgpUaGUgZGF0YSBpcyBwdWJsaXNoZWQgYnkgdGhlIEdlbm9taWNzIGluIERydWcgU2Vuc2l0aXZpdHkgaW4gQ2FuY2VyIFByb2plY3QuIFRoZSBwcm9qZWN0IGlzIGEgam9pbnQgZWZmb3J0IGJ5IHRoZSBDYW5jZXIgR2Vub21lIFByb2plY3QsIHRoZSBXZWxsY29tZSBUcnVzdCBTYW5nZXIgaW5zdGl0dXRlIGFuZCB0aGUgQ2VudGVyIGZvciBNb2xlY3VsYXIgVGhlcmFwZXV0aWNzIGF0IE1HSC4KCioqV2h5IGRvIHRoZXkgcHVibGlzaCBpdD8qKgpUaGUgZGF0YSBpcyBmdW5kZWQgYnkgcHVibGljIGVudGl0aWVzLCBzdWNoIGFzIHRoZSBXZWxsY29tZSBUcnVzdCBhbmQgaXMgcHVibGlzaGVkIGluIHNjaWVudGlmaWMgcHVibGljYXRpb25zLiBUbyBpbmNyZWFzZSB0aGUgYWNjZXNzIG9mIHRoZSBwcm9qZWN0J3MgZGF0YSwgdGhlIGRhdGEgaXMgZnJlZWx5IGF2YWlsYWJsZSBvbmxpbmUuCgoqKkhvdyBmcmVxdWVudGx5IGlzIGl0IHVwZGF0ZWQ/KioKVGhlIGRhdGEgaXMgdXBkYXRlZCBpbiBhbiBpcnJlZ3VsYXIgc2NoZWR1bGUsIHdoZW4gYSBiYXRjaCBvZiBjYW5jZXIgY2VsbCBsaW5lIHZ1bG5lcmFiaWxpdHkgZGF0YSBoYXMgYmVlbiBjb2xsZWN0ZWQgYW5kIHByZS1wcm9jZXNzZWQuIFRoZSBsYXN0IHVwZGF0ZSBvZiB0aGUgZGF0YXNldCB3YXMgcHVibGlzaGVkIGluIE1hcmNoIDIwMTguIAoKKipXaGF0IHZhcmlhYmxlcyBkb2VzIGl0IGNvbnRhaW4/KioKVGhlIGRhdGFzZXQgY29udGFpbnMgbXVsdGlwbGUgdGFibGVzOiAKKiBtZXRhLWRhdGEgYWJvdXQgZXZlcnkgY2FuY2VyIGNlbGwgbGluZSwgc3VjaCBhcyBjdWx0dXJlIG1lZGl1bSBhbmQgdGlzc3VlIG9mIG9yaWdpbi4gCiogY29weS1udW1iZXIgdmFyaWFudHMgZm9yIGV2ZXJ5IGNlbGwgbGluZSwgaW4gdGhlIGZvcm0gb2YgYSBiaW5hcnkgbWF0cml4CiogZ2VuZSBleHByZXNzaW9uIGRhdGEgZm9yIGV2ZXJ5IGNlbGwgbGluZSwgaW4gdGhlIGZvcm0gb2YgYSBudW1lcmljIG1hdHJpeAoqIGRydWcgcmVzcG9uc2UgZGF0YSBmb3IgZXZlcnkgY2VsbCBsaW5lLiBUaGUgZGF0YSBjb250YWlucyAqSUM1MCogdmFsdWVzIGZvciA+NjAgZHJ1Z3MuCgoqKkhvdyBpcyBpdCBkZWxpdmVyZWQ/KioKVGhlIGRhdGEgaXMgYXZhaWxhYmxlIG9uIHRoZSBwcm9qZWN0J3MgW3dlYnNpdGVdKGh0dHBzOi8vd3d3LmNhbmNlcnJ4Z2VuZS5vcmcvZG93bmxvYWRzKSBhbmQgaXMgc3BsaXQgYWNyb3NzIG11bHRpcGxlIEV4Y2VsIGZpbGVzLgoKKipBcmUgdGhlcmUgYW55IHJlc3RyaWN0aW9ucyBvbiBpdHMgdXNlIG9yIGF2YWlsYWJpbGl0eT8qKgpZZXMsIHRoZSBkYXRhIGlzIHN1YmplY3QgdG8gcmVzdHJpY3Rpb25zOiAqIlVzZXJzIGhhdmUgYSBub24tZXhjbHVzaXZlLCBub24tdHJhbnNmZXJhYmxlIHJpZ2h0IHRvIHVzZSBkYXRhIGZpbGVzIGZvciBpbnRlcm5hbCwgbm9uLWNvbW1lcmNpYWwgcmVzZWFyY2ggYW5kIGVkdWNhdGlvbmFsIHB1cnBvc2VzIFBsZWFzZSBub3RlOiBUaGUgZGF0YSBmaWxlcyBhcmUgZXhwZXJpbWVudGFsIGFuZCBhY2FkZW1pYyBpbiBuYXR1cmUgYW5kIGFyZSBub3QgbGljZW5zZWQgb3IgY2VydGlmaWVkIGJ5IGFueSByZWd1bGF0b3J5IGJvZHkuIEdlbm9tZSBSZXNlYXJjaCBMaW1pdGVkIHByb3ZpZGVzIGFjY2VzcyB0byBkYXRhIGZpbGVzIG9uIGFuIOKAnGFzIGlz4oCdIGJhc2lzIGFuZCBleGNsdWRlcyBhbGwgd2FycmFudGllcyBvZiBhbnkga2luZCAoZXhwcmVzcyBvciBpbXBsaWVkKS4iKi4gCgoqKkRvZXMgaXQgbWFrZSB1c2Ugb2YgYW55IHN0YW5kYXJkIChvciBwcm9wcmlldGFyeSkgb250b2xvZ2llcyBvciB0ZXJtaW5vbG9naWVzPyoqClRoZSBkYXRhIHVzZXMgKkNPU01JQyBJRHMqIHRvIGlkZW50aWZ5IGNlbGwgbGluZXMuIFRoZSBnZW5lIGV4cHJlc3Npb24gZGF0YSBpcyBhbm5vdGF0ZWQgdXNpbmcgdGhlIFtFbnNlbWJsZV0oaHR0cHM6Ly91c2Vhc3QuZW5zZW1ibC5vcmcvaW5kZXguaHRtbCkgbm9tZW5jbGF0dXJlLiBUaGUgZ2VuZSBtdXRhdGlvbiBkYXRhc2V0IGlzIGFubm90YXRlZCB1c2luZyB0aGUgKkhVR08qIHRlcm1pbm9sb2d5LiBUaGUgZHJ1Z3MgdGVzdGVkIGFyZSBub3QgbGlua2VkIHRvIGEgc3RhbmRhcmRpemVkIG9udG9sb2d5LiAKCioqV2hhdCBhcmUgc29tZSBxdWVzdGlvbnMgdGhhdCBoYXZlIGJlZW4gYXNrZWQgcHJldmlvdXNseSB1c2luZyB0aGUgZGF0YT8qKgpQcmV2aW91c2x5LCB0aGlzIGRhdGEgaGFzIGJlZW4gdXNlZCB0byBmaW5kIHByZWRpY3RpdmUgbW9kZWxzIHRoYXQgbGluayBnZW5ldGljIG1hcmtlcnMgd2l0aCBkcnVnIHJlc3BvbnNlIFtJb3JpbyBldCBhbC4sIDIwMTZdKGh0dHBzOi8vd3d3LmNlbGwuY29tL2Z1bGx0ZXh0L1MwMDkyLTg2NzQoMTYpMzA3NDYtMikuIEluIGFkZGl0aW9uIHZpc3VhbGl6YXRpb24gcHJvamVjdHMgaGF2ZSBjcmVhdGVkIFthcHBsaWNhdGlvbnNdKGh0dHBzOi8vam91cm5hbHMucGxvcy5vcmcvcGxvc29uZS9hcnRpY2xlP2lkPTEwLjEzNzEvam91cm5hbC5wb25lLjAxNzY3NjMpIHRvIGV4cGxvcmUgdGhpcyBkYXRhc2V0LgoKIVtFeGFtcGxhdG9yeSBhbmFseXNpcyBpbiB0aGUgQ2FuY2VyUnhHZW5lIFBvcnRhbDogV2hpY2ggZ2Vub21pYyBmZWF0dXJlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGRydWcgc2Vuc2l0aXZpdHkgdG8gdGhlIGNoZW1vdGhlcmFwZXV0aWMgNS1GVV0odnVsY2Fuby5wbmcpCgpcbmV3cGFnZQoKIyMgUGFydCAyOiBJZGVudGlmaWNhdGlvbiBvZiBwb3RlbnRpYWwgcGVyc29uYWxpemVkIGNhbmNlciBjb21iaW5hdGlvbiB0aGVyYXBpZXMgdW5kZXIgYSBub24tc3luZXJneSBhc3N1bXB0aW9uCgojIyMgSW50cm9kdWN0aW9uCgpSZWNlbnQgW3NpbXVsYXRpb24gYW5hbHlzaXNdKGh0dHBzOi8vbGlua2luZ2h1Yi5lbHNldmllci5jb20vcmV0cmlldmUvcGlpL1MwMDkyLTg2NzQoMTcpMzEzMTgtMSkgb2YgY2xpbmljYWwgdHJpYWxzIGFzc2Vzc2luZyB0aGUgYWN0aXZpdHkgb2YgY29tYmluYXRpb24gY2FuY2VyIHRoZXJhcGllcyBzdWdnZXN0LCB0aGF0IHRoZSBtYWluIGRyaXZlciBvZiBzdXBlcmlvcml0eSBvZiBkcnVnIGNvbWJpbmF0aW9ucyBvdmVyIHNpbmdsZS1hZ2VudCByZWdpbWVucyBpcyBub3QgYmlvY2hlbWljYWwgc3luZXJneSBiZXR3ZWVuIGRydWdzLCBidXQgYW4gaW5jcmVhc2VkIHByb2JhYmlsaXR5IG9mIGVpdGhlciBvbmUgb2YgdGhlIGRydWdzIGNhdXNpbmcgYSB0aGVyYXBldXRpYyBlZmZlY3QgaW4gYSBwYXRpZW50J3MgZGlzZWFzZS4gQWNjb3JkaW5nIHRvIHRoaXMgdGhlb3J5LCBjb21iaW5hdGlvbiB0cmVhdG1lbnRzIHdpdGggYWdlbnRzIHRoYXQgaGF2ZSBhbnRpLWNvcnJlbGF0ZWQgcmVzcG9uc2UgcHJvZmlsZXMgYXJlIGludGVyZXN0aW5nIGNhbmRpZGF0ZSBjb21wb3VuZHMgZm9yIGZ1cnRoZXIgY2xpbmljYWwgZXZhbHVhdGlvbi4gSW4gdGhlaXIgb3JpZ2luYWwgc3R1ZHkgdGhlIGF1dGhvcnMgZGVtb25zdHJhdGUgdGhhdCBpbiBmYWN0IHRoZSBtYWpvcml0eSBvZiBjdXJyZW50bHkgYWRtaW5pc3RlcmVkIGNvbWJpbmF0aW9uIHRyZWF0bWVudHMgaW4gb25jb2xvZ3kgYXJlIG5vdCBwb3NpdGl2ZWx5IGNvcnJlbGF0ZWQuIAoKIVtWaXN1YWwgQWJzdHJhY3Qgb2YgKkNvbWJpbmF0aW9uIENhbmNlciBUaGVyYXB5IENhbiBDb25mZXIgQmVuZWZpdCB2aWEgUGF0aWVudC10by1QYXRpZW50IFZhcmlhYmlsaXR5IHdpdGhvdXQgRHJ1ZyBBZGRpdGl2aXR5IG9yIFN5bmVyZ3kqIGJ5IFBhbG1lciBldCBhbC4sIDIwMThdKHZpc19hYnN0cmFjdC5qcGcpCgpJbiB0aGlzIHN0dWR5LCBteSBnb2FsIGlzIHRvIGlkZW50aWZ5IG5ldyBwb3RlbnRpYWwgY29tYmluYXRpb25zIG9mIHRoZXJhcGV1dGljcyB0aGF0IGFyZSBhbnRpIGNvcnJlbGF0ZWQgaW4gb25lIG9mIHRoZSBsYXJnZXN0IGluLXZpdHJvIGNhbmNlciBkcnVnIHNlbnNpdGl2aXR5IGRhdGFzZXRzLiBCZWNhdXNlIG9uY29sb2d5IHRvZGF5IGlzIGEgaGlnaGx5IHNwZWNpYWxpemVkIGZpZWxkLCBpdCBpcyBub3Qgc3VmZmljaWVudCB0byBvbmx5IGlkZW50aWZ5IGNvbXBvdW5kcyB0aGF0IGFyZSBhbnRpLWNvcnJlbGF0ZWQgZnJvbSBhIHBhbi1jYW5jZXIgcGVyc3BlY3RpdmUuIEluc3RlYWQsIEkgd2lsbCBydW4gbXVsdGlwbGUgY29ycmVsYXRpb24gYW5hbHlzaXMgb24gc3Vic2V0cyBvZiBjYW5jZXIgY2VsbCBsaW5lcyBkZWZpbmVkIGJ5IHRpc3N1ZSBvZiBvcmlnaW4gb3IgbXV0YXRpb24gc3RhdHVzLiBCZWNhdXNlLCB0aGUgZXN0aW1hdGlvbiBvZiBjb3JyZWxhdGlvbiBjb2VmZmljaWVudHMgaXMgbm90IHN0YWJsZSB3aXRoIGRpZmZlcmluZyBudW1iZXIgb2Ygc2FtcGxlcyBhbmQgc3Vic2V0dGluZyBvZiB0aGUgZGF0YXNldCBsZWFkcyB0byB2ZXJ5IHNtYWxsIHN1Ymdyb3VwcywgSSBoYXZlIGludHJvZHVjZWQgYSBCYXllc2lhbiBzYW1wbGluZyBiYXNlZCBtZXRob2QgdG8gZXN0aW1hdGUgdGhlIGNyZWRpYmxlIGludGVydmFscyBvZiBjb3JyZWxhdGlvbiBjb2VmZmljaWVudHMgZm9yIHNtYWxsIGdlbmV0aWNhbGx5IGRlZmluZWQgc3ViZ3JvdXBzLiBJIGhhdmUgaWRlbnRpZmllZCBhbiBhbnRpLWNvcnJlbGF0aW9uIG9mIGhpZ2hseSBhY3RpdmUgTUVLIGFuZCBBS1QgaW5oaWJpdG9ycyBhY3Jvc3MgYWxsIGF2YWlsYWJsZSBjYW5jZXIgdHlwZXMuIEFtb25nIG1hbnksIEJheWVzaWFuIGVzdGltYXRpb24gb2YgY29ycmVsYXRpb24gY29lZmZpY2llbnRzIGlkZW50aWZpZWQgTkdGUiByZWNlcHRvciBpbmhpYml0aW9uIGFzIGEgc3Ryb25nIGNhbmRpZGF0ZSBjb21iaW5hdGlvbiBmb3IgTUVLIGluaGliaXRvcnMgaW4gTWVsYW5vbWEsIHRoZXJlYnkgY29uZmlybWluZyBbcHJpb3IgcmVwb3J0c10oaHR0cDovL21zYi5lbWJvcHJlc3Mub3JnL2NvbnRlbnQvMTMvMS85MDUpIG9mIGRlLWRpZmZlcmVudGlhdGlvbiBiYXNlZCBkcnVnIHJlc2lzdGFuY2UgdG8gTUVLIGluaGliaXRpb24uCgohW1NpbXVsYXRpb24gb2YgY29tYmluYXRvcnkgZHJ1ZyBlZmZlY3RzIGJ5IFBhbG1lciBldCBhbC4gc3VnZ2VzdCBub24tc3luZXJnaXN0aWMgaW50ZXJhY3Rpb25zIG9mIGFudGktY2FuY2VyIGFnZW50cyBhY3Jvc3MgZHJ1Zy0gYW5kIGNhbmNlci10eXBlc10ocGFsbWVyX2ZpZ3VyZS5wbmcpCgojIyMgQ29ycmVsYXRpb24gYW5hbHlzaXMgb2YgZHJ1ZyBzZW5zaXRpdml0eSBwcm9maWxlcyBpZGVudGlmaWVzIG11dHVhbGx5IGV4Y2x1c2l2ZSBzZW5zaXRpdml0eSB0byBNRUsgYW5kIEFLVCBpbmhpYml0aW9uLgoKV2UgcHJlcHJvY2Vzc2VkIHRoZSBkcnVnIHJlc3BvbnNlIGRhdGEgYnkgbG9nIHRyYW5zZm9ybWluZyBhbmQgbWVkaWFuIGNlbnRlcmluZyBJQzUwIHZhbHVlcyBmb3IgZWFjaCBkcnVnIG92ZXIgZXZlcnkgY2VsbCBsaW5lLiBCeSB0cmFuc2Zvcm1pbmcgSUM1MCB2YWx1ZXMgdGhpcyB3YXksIHdlIGFyZSBhYmxlIHRvIGNvbXBhcmUgZHJ1ZyBlZmZlY3RzIGJldHdlZW4gYm90aCBjZWxsIGxpbmVzIGFuZCBkcnVncy4KCiFbRGlzdHJpYnV0aW9uIG9mIGxvZyhJQzUwKSB2YWx1ZXMgYmVmb3JlIGNlbnRlcmluZ10ocmF3X2ljNTAucG5nKQoKVGhlIHR3byBkZW5zaXR5IHBsb3RzIHNob3cgdGhlIGRpc3RyaWJ1dGlvbiBvZiBJQzUwIHZhbHVlcyBhY3Jvc3MgYWxsIGNlbGwgbGluZXMgZm9yIGVhY2ggZHJ1Zy4gCgohW0Rpc3RyaWJ1dGlvbiBvZiBsb2coSUM1MCkgdmFsdWVzIGFmdGVyIGNlbnRlcmluZ10oY2VudGVyX2ljNTAucG5nKQoKQWZ0ZXIgcHJlcHJvY2Vzc2luZyBkcnVnIHJlc3BvbnNlIHNjb3JlcywgSSBwZXJmb3JtZWQgUGVhcnNvbiBjb3JyZWxhdGlvbiBhbmFseXNlcyBvZiBwYWlyd2lzZSBjb21wbGV0ZSBvYnNlcnZhdGlvbnMgZm9yIGVhY2ggdW5pcXVlIHBhaXIgb2YgZHJ1ZyBzZW5zaXRpdml0eSB2ZWN0b3JzLiAKCiFbQ29ycmVsYXRpb24gb2YgZHJ1Zy1kcnVnIHBhaXJzIGFjcm9zcyBhbGwgcG9zc2libGUgY29tYmluYXRpb25zIHVzaW5nIGFsbCBhdmFpbGFibGUgY2VsbGxpbmUgbW9kZWxzXShwYW5fY2FuY2VyX3JfaGlzdC5wbmcpCgpJIHVzZWQgYXZhaWxhYmxlIGNvbXBvdW5kIG1lY2hhbmlzbSBvZiBhY3Rpb24gaW5mb3JtYXRpb24gdG8gbGluayBldmVyeSBwYWlyIHRvIHRoZSBtb2xlY3VsYXIgdGFyZ2V0cyBpdCB3YXMgaW5oaWJpdGluZy4gQ2hpLVNxdWFyZSB0ZXN0aW5nIG9mIG1vbGVjdWxhciB0YXJnZXRzIGluIHRoZSBzaWduaWZpY2FudGx5IG5lZ2F0aXZlIGNvcnJlbGF0ZWQgcGFpcnMgc2hvd2VkIGEgc3Ryb25nIGVucmljaG1lbnQgZm9yIHRoZSBjb21iaW5lZCBpbmhpYml0aW9uIG9mIE1FSyBhbmQgQUtULiAKCiFbRW5yaWNobWVudCBvZiBkdWFsIGluaGliaXRpb24gb2YgTUVLIGFuZCBBS1QgYWNyb3NzIGFsbCBjYW5jZXIgY2VsbCBsaW5lcy4gU2hvd24gYXJlIHRoZSByZXNpZHVhbHMgZm9yIGVhY2ggbW9sZWN1bGFybHkgdGFyZ2V0ZWQgcGFpciBhZnRlciBwZXJmb3JtaW5nIGEgQ2hpLVNxdWFyZSB0ZXN0LiBPbmx5IHZhbHVlcyB3aXRoIGEgcG9zaXRpdmUgcmVzaWR1YWwgYXJlIHBsb3R0ZWQuXSh0YXJnZXRfaW50ZXJhY3Rpb24ucG5nKQoKSW4tZGVwdGggYW5hbHlzaXMgb2YgdGhlIGFudGktY29ycmVsYXRpb24gcGF0dGVybiBiZXR3ZWVuIE1FSyBhbmQgQUtUIGluaGliaXRvcnMgc2hvd2VkIGEgbXV0dWFsbHkgZXhjbHVzaXZlIHJlc3BvbnNlIHBhdHRlcm4gdG8gZWl0aGVyIE1FSyBvciBBS1QgaW5oaWJpdGlvbiwgd2hpbGUgdGhlIG1ham9yaXR5IG9mIHR1bW9yIGNlbGxzIGRpZCBub3QgcmVzcG9uZCB0byBib3RoIHRyZWF0bWVudHMuIAoKIVtBbnRpY29ycmVsYXRpb24gb2YgTUVLLSBhbmQgQUtULWluaGliaXRvciBzZW5zaXRpdml0eV0oYWt0X21la19wYW5jYW5jZXIucG5nKQoKU2Vuc2l0aXZpdHkgdG8gTUVLIGluaGliaXRpb24gYW5kIEFLVCBpbmhpYml0aW9uIGhhcyBwcmV2aW91c2x5IEJlZW4gbGlua2VkIHRvIHRoZSBtdXRhdGlvbiBzdGF0dXMgb2YgYmlvbWFya2Vycywgc3VjaCBhcyAqS1JBUyogb3IgKlBJM0sqLiBJbiBsaW5lIHdpdGggdGhlc2UgYXNzb2NpYXRpb25zLCBLUkFTIG11dGFudCBjYW5jZXIgY2VsbHMgd2VyZSBtb3JlIHNlbnNpdGl2ZSB0byBNRUsgaW5oaWJpdGlvbiBhcyB3ZXJlIFBJSzNDQSBtdXRhbnQgY2VsbHMgdG8gQUtUIGluaGliaXRpb24uIAoKIVtLUkFTIGFuZCBQSTNLQ0Egc3RhdHVzIGFyZSBsaW5rZWQgdG8gZHJ1ZyByZXNwb25zZSB1bmRlciBNRUsgYW5kIEFLVCBpbmhpYml0aW9uXShha3RfbWVrX3BhbmNhbmNlcl9hbm5vLnBuZykKCgojIyMgQmF5ZXNpYW4gc3ViZ3JvdXAtcmVzdHJpY3RlZCBjb3JyZWxhdGlvbiBhbmFseXNpcyBpZGVudGlmaWVzIHBvdGVudGlhbCB0aXNzdWUtIGFuZCBnZW5vdHlwZS1zcGVjaWZpYyBjb21iaW5hdGlvbiB0aGVyYXBpZXMuCgpBcyB0aGUgcHJldmlvdXMgZXhhbXBsZSBpbGx1c3RyYXRlcywga25vd24gZ2Vub3R5cGUtIGFuZCB0aXNzdWUtc3BlY2lmaWMgcHJlZGljdG9ycyBvZiBkcnVnIHNlbnNpdGl2aXR5IGNhbiB1bmRlcmxpZSBhbnRpLWNvcnJlbGF0aW9uIHBhdHRlcm5zLCB0aGVyZWJ5IHJlZHVjaW5nIHRoZSBjbGluaWNhbCB2YWx1ZSBvZiBzdWNoIGRydWcgY29tYmluYXRpb25zIGluIGEgZ2VuZXRpY2FsbHktaW5mb3JtZWQgY2xpbmljYWwgcHJhY3RpY2UuIEluIG9yZGVyIHRvIGlkZW50aWZ5IGRydWcgY29tYmluYXRpb25zIGluIG1vcmUgc3BlY2lmaWMgc3ViZ3JvdXBzIG9mIGNhbmNlciBtb2RlbHMsIHdoaWNoIHNoYXJlIGNvbW1vbiBnZW5ldGljIGZlYXR1cmVzIG9mIHRpc3N1ZSB0eXBlcywgSSBwZXJmb3JtZWQgbXVsdGlwbGUgY29ycmVsYXRpb24gYW5hbHlzZXMgaW4gc3ViZ3JvdXBzIG9mIGNhbmNlciBjZWxsIGxpbmVzLiAKClRvIHRoaXMgZW5kLCBJIGlkZW50aWZpZWQgbW9yZSB0aGFuIDUwIGdlbm90eXBlIG9yIHRpc3N1ZSByZWxhdGVkIGZlYXR1cmVzIHRoYXQgYXJlIGF0IGxlYXN0IHByZXNlbnQgaW4gbW9yZSB0aGFuIDIlIG9mIGFsbCBhdmFpbGFibGUgY2FuY2VyIG1vZGVscy4gQWZ0ZXIgZ3JvdXBpbmcgbW9kZWxzIGJ5IGZlYXR1cmVzIGFuZCBwZXJmb3JtaW5nIHN1Ymdyb3VwLXNwZWNpZmljIGNvcnJlbGF0aW9uIGFuYWx5c2VzIEkgb2JzZXJ2ZWQgYSBzdHJvbmcgaGV0ZXJvc2NlZGFzdGljaXR5IG9mIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50cywgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIHRoZSByZXNwZWN0aXZlIHN1Ymdyb3VwLiAKCiFbSW5jcmVhc2VkIHZhcmlhbmNlIG9mIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50cyBhcyBzdWJncm91cCBzaXplIGRlY3JlYXNlc10oaGV0ZXJvLnBuZykKClRvIGdlbmVyYXRlIHN0YWJsZSBlc3RpbWF0ZXMgb2YgY29ycmVsYXRpb24sIEkgZ2VuZXJhdGVkIHNhbXBsaW5nIGJhc2VkIGNyZWRpYmxlIGludGVydmFscyBvZiBjb3JyZWxhdGlvbiBjb2VmZmljaWVudHMgdXNpbmcgYSBbQmF5ZXNpYW4gY29ycmVsYXRpb25dKGh0dHBzOi8vYmFlem9ydGVnYS5naXRodWIuaW8vMjAxOC8wNS8yOC9yb2J1c3QtY29ycmVsYXRpb24vKSBtZXRob2Qgd2hpY2ggZXhwZWN0cyBhIGJpdmFyaWF0ZSB0LWRpc3RyaWJ1dGlvbiB1bmRlcmx5aW5nIGEgZ2l2ZW4gZGF0YXNldC4gVGh1cywgaXQgaXMgbGVzcyB2dWxuZXJhYmxlIHRvIG91dGxpZXJzLCB3aGljaCBhcmUgZXNwZWNpYWxseSBpbXBhY3RmdWwgaW4gc3ViZ3JvdXBzIHdpdGggbG93IHNhbXBsZSBzaXplLiBCZWNhdXNlIG9mIHJlc3RyaWN0ZWQgY29tcHV0ZSBhY2Nlc3MgKHNhbXBsaW5nIG9mIDYwLjAwMCBkcnVnIHBhaXJzIGFjcm9zcyBzdWJncm91cHMgdG9vayA+MjRoIG9uIGFuIGluc3RhbmNlIHdpdGggMTYgQ1BVcykgSSB3YXMgbm90IGFibGUgdG8gZXN0aW1hdGUgY3JlZGlibGUgaW50ZXJ2YWxzIGZvciBldmVyeSBkcnVnLWRydWcgcGFpciwgYnV0IHJlc3RyaWN0ZWQgdGhlIGV2YWx1YXRpb24gdG8gcGFpcnMgd2l0aCBhIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50IDwwIGluIHRoZSBwcmlvciBub24tcm9idXN0IGNvcnJlbGF0aW9uIGFuYWx5c2lzLgoKIVtOVFJLMSBpbmhpYnRvcnMgYXJlIGFjdGl2ZSBpbiBNRUsgaW5oaWJpdG9yIHJlc2lzdGFudCBNZWxhbm9tYSBjZWxsIGxpbmVzXShtZWxhbm9tYV9hbm5vLnBuZykKCkFzIGEgcGFydCBvZiB0aGlzIGFuYWx5c2lzIEkgaWRlbnRpZmllZCBhIHN0cm9uZyBhbnRpLWNvcnJlbGF0aW9uIG9mICpzZWx1bWV0aW5pYiogYW5kICpndzQ0MTc1NiogaW4gbWVsYW5vbWEgY2FuY2VyIG1vZGVscy4gVG9kYXksIE1FSyBpbmhpYml0aW9uIGlzIGFuIGF2YWlsYWJsZSB0YXJnZXRlZCB0cmVhdG1lbnQgc3RyYXRlZ3kgb2YgKkJSQUYqIG5lZ2F0aXZlIE1lbGFub21hLiBSZWNlbnQgW2V2aWRlbmNlXShodHRwOi8vbXNiLmVtYm9wcmVzcy5vcmcvY29udGVudC8xMy8xLzkwNSkgc3VnZ2VzdHMgdGhhdCBNRUsgaW5oaWJpdG9yIHJlc2lzdGFudCBtZWxhbm9tYSBjZWxscyBlbnRlciBhIHN0YXRlIG9mIGRlZGlmZmVyZW50YXRpb24sIGJ5IG92ZXIgZXhwcmVzc2lvbiBvZiBOR0ZSLCBhbiBpbnRlcmFjdGlvbiBwYXJ0bmVyIG9mIE5UUksxLiAKCkFub3RoZXIgb2JzZXJ2YXRpb24gZHVyaW5nIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVzdWx0cyB3YXMgYW4gYW50aSBjb3JyZWxhdGlvbiBvZiByZXNwb25zZXMgdG8gdGhlIHR3byBwcm8tYXBvcHRvdGljIGNvbXBvdW5kcyAqci1UUkFJTCogYW5kICpPYmF0b2NsYXgqIGluICpBUEMqIG11dGFudCBjYW5jZXIgY2VsbCBsaW5lcy4gKkFQQyogaXMgYSBmcmVxdWVudGx5IG11dGF0ZWQgdHVtb3Igc3VwcHJlc3NvciBnZW5lIGluIGNvbG9yZWN0YWwgY2FuY2VyLiBUaGUgaWRlbnRpZmllZCBhbnRpLWNvcnJlbGF0aW9uIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIFt0d28gZGlmZmVyZW50IG1lY2hhbnNpc21zIG9mIGFwb3B0b3NpcyBzdGltdWxhdGlvbiBpbiBodW1hbiBjZWxsc10oaHR0cHM6Ly9iaW9sb2d5ZGljdGlvbmFyeS5uZXQvd3AtY29udGVudC91cGxvYWRzLzIwMTcvMDYvRXh0cmluc2ljLWFuZC1pbnRyaW5zaWMtYXBvcHRvdGljLXNpZ25hbGxpbmctcGF0aHdheXMuanBnKSwgdGhlIGludHJpbnNpYyBwYXRod2F5LCB3aGljaCBpcyBtb2RpZmllZCBieSAqT2JhdG9jbGF4KiBhbmQgdGhlIGV4dHJpbnNpYyBwYXRod2F5LCB3aGljaCBpcyBpbmZsdWVuY2VkIGJ5ICpyLVRSQUlMKi4KCiFbZXh0cmluc2ljIHN0aW11bGF0aW9uIG9mIGFwb3B0b3NpcyBpcyBhY3RpdmUgaW4gT2JhdG9jbGF4IHJlc2lzdGFudCBBUEMgbXV0YW50IGNhbmNlciBjZWxsc10odHJhaWxfYXBjX2Fubm8ucG5nKQoKVGhlIHRpbWVsaW5lIG9mIHRoaXMgcHJvamVjdCBkaWQgbm90IGFsbG93IGZvciBmdXJ0aGVyIGluLWRlcHRoIGFuYWx5c2lzIG9mIHBvdGVudGlhbCBjb21iaW5hdGlvbiB0aGVyYXBpZXMuIEkgcGxhbiB0byBwdXJzdWUgdGhpcyBwcm9qZWN0IGZ1cnRoZXIgYW5kIHdvcmsgdG93YXJkcyBhIHB1YmxpY2F0aW9uLgoKIyMjIEN1cmF0aW5nIGEgZGF0YWJhc2Ugb2YgZHJ1ZyByZXNwb25zZSBhbmQgZ2Vub21pYyBpbmZvcm1hdGlvbiBvZiBjYW5jZXIgbW9kZWxzCgpJbiBvcmRlciB0byBmYWNpbGl0YXRlIHRoZSB1c2Ugb2YgdGhlIGN1cmF0ZWQgZGF0YSwgSSBjcmVhdGVkIGEgY29tcGFjdCBTUUxpdGUgZGF0YWJhc2UsIHdoaWNoIGNhbiBiZSBzaGFyZWQgdXBvbiByZXF1ZXN0LiBUaGUgZGF0YWJhc2UgY29udGFpbnMgNCB0YWJsZXM6IAoKKiBjb3B5IG51bWJlciB2YXJpYXRpb25zICAKKiBtdXRhdGlvbnMKKiBkcnVnIHJlc3BvbnNlcwoqIGNlbGwgbGluZSBjb3ZhcmlhdGVzLCBzdWNoIGFzIHRpc3N1ZSB0eXBlCgpBbGwgdGFibGVzIGFyZSBzZWFyY2hhYmxlIGJ5IHRoZSBjb3NtaWNfaWQsIGEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGV2ZXJ5IGNhbmNlciBjZWxsIGxpbmUgaW4gdGhlIGRhdGFzZXQuCgoK